1. Field of the Invention
The present invention relates generally to data networks, and more specifically to a technique for distributed load balancing of network traffic across a data network.
2. Background
Content providers on the World Wide Web are willing to pay a great deal of money to guarantee that their content is delivered quickly and accurately to any given client. Accordingly, a great deal of research has been conducted to address the problem of speeding up HTTP transactions conducted between a client and a server, particularly in situations where there is a relatively large propagation delay between the client and the server.
Although the speed of data transmission across the Internet is continuing to increase, the propagation delay associated with the speed of an electrical signal traveling through a wire or fiberoptic cable (i.e. the speed of light) cannot be reduced. Such delays are becoming a significant factor in the overall propagation delay between the server and client. In order to reduce the overall propagation delay between a given server and a given client, conventional techniques have resorted to replicating the server system, and placing multiple copies of the replicated server system at locations as near as possible to the client.
Thus, for example, a common technique used by content providers is to store content from the host server in co-location spaces that are geographically distributed over a wide area. The co-location spaces form an overlay network that is more costly and less flexible, but provide better service than the traditional Internet. Typically the ISPs which manage the co-location spaces charge the content provider for each megabyte stored in the co-location space. The co-location spaces may be implemented as proxy servers, which pull specific data from the host server in response to specific client requests, or may be implemented as fully replicated servers which include all the information of the host server.
Although the use of co-location spaces will help reduce the overall propagation delay between a server and client, another issue which arises relates to the problem of determining how an arbitrary client is redirected to the nearest replica or proxy server, particularly where it is not known ahead of time which clients will be asking for information and where the clients are located. Some conventional techniques have been implemented to address this problem, but typically require the use of a gateway router.
An alternate technique for predicting, for a given client, the nearest replica or proxy server to that client has been developed by Akamai Technologies, Inc. (of Cambridge, Mass.). The proprietary Akamai routing technique involves constructing a network map of the Internet topology. The network map information is stored in a central network operating center or NOC which is located on a specific Akamai server. When a client attempts to access a content provider""s site which is part of the Akamai overlay network of co-location servers, the client will initiate a DNS resolution request, which is resolved by the NOC server. The NOC dynamically resolves the requested domain name to a co-location server address that is nearest topologically to the client, using information from the network map.
However, in order for Akamai""s routing technique to be successfully implemented, the network topology map must be continually updated and maintained. According to at least one school of thought, however, maintaining an accurate Internet topology may be nearly impossible since the Internet topology is dynamically changing and is exponentially growing in size and complexity each day.
Accordingly, in light of the foregoing, there exists a continual need to develop alternative solutions for providing fast and efficient routing and load balancing of web traffic across data networks.
According to specific embodiments of the present invention, a technique is provided for routing a client device to access a specific client server in a data network. The data network may include at least one host server, a sub-network of client servers associated with the at least one host server, and at least one client system. According to one embodiment, the data network corresponds to the Internet, wherein the at least one host server corresponds to the host server of a content provider, the sub-network of client servers corresponds to an overlay network of proxy or replica servers, and the client system corresponds to at least one client computer which accesses the Internet via a name server.
The technique of the present invention provides a solution to the problem of routing or redirecting a given client to a replica or proxy server which has a relatively shortest propagation delay to the client. According to the technique of the present invention, a network device referred to as an intercept server sits in front of a host server, and intercepts packets routed to the host server. When desired, packets which are intercepted by the intercept server are replicated, encapsulated and tunneled to selected client servers in the overlay network. The tunneled packets are received and processed by each of the selected client servers, whereupon each of the selected client servers generates a respective spoofed response to the source device identified in the header of the originally intercepted packet. Further, according to the technique of the present invention, each of the selected client servers transmits its respective spoofed response to the identified source device at substantially the same time. The client server associated with the spoofed response which is first received at the identified source device is considered to have a relatively shortest propagation delay to the identified source device, and is identified as the successful client server. Thereafter, the source device will be directed or redirected to communicate directly with the successful client server when subsequently attempting to access information from the host server.
According to specific embodiments of the present invention, a method and computer program product are disclosed for routing a specific device to access a specific client server in a data network which includes a sub-network of client servers associated with at least one host server. A first request from a source device is received. The source device is identified using information from the received request. The identified source device information is then used to determine a first portion of client servers to which the first request will be forwarded. Information relating to the first request is then forwarded to the first portion of client servers. Additionally, each of the first portion of client servers is caused to respond to the source device at substantially the same time.
According to one embodiment, the intercept server determines the associated one-way propagation delay value for communicating with each respective client server in the sub-network. Using this data, the intercept server staggers the transmission of the forwarded first request to each of the first plurality of client servers in order to ensure that the forwarded first requests are received at the first portion of client servers at substantially the same time. According to an alternative embodiment, the intercept server transmits trigger information along with each forwarded first request. The trigger information corresponds to a specific time at which all of the first portion of client servers are to transmit their respective spoofed responses to the source device.
According to alternate embodiments of the present invention, a method and computer program product are disclosed for routing a specific device to access a specific client server in a data network. The data network may include a sub-network of client servers associated with at least one host server. A tunneled packet from an intercept server is received at a first client server. The tunneled packet includes information relating to a first request from the specific device to resolve an address of a host name. The first client server uses information from the received tunneled packet to generate a first spoofed response to the first request. The first spoofed response is then transmitted to the specific device. According to one implementation, the first spoofed response comprises a DNS record response specifying an IP address associated with the first client server.
According to a different embodiment, a tunneled packet from an intercept server is received at a plurality of client servers. The tunneled packet includes information relating to a first request from a specific device to resolve an address for a host name. Each of the plurality of client servers uses the information from the received tunneled packet to generate a respective spoofed response to the first request. The plurality of client servers each transmit their respective spoofed responses at substantially the same time to the specific device.
An alternate embodiment of the present invention is directed to a system for routing a specific device to access a specific client server in a data network. The data network may include a sub-network of client servers configured or designed to store information corresponding to information stored on at least one host server. The system comprises an intercept server in communication with the plurality of client servers and the specific device. The intercept server is configured or designed to intercept a request from a source device. The intercept server is further configured or designed to identify the source device which sent the first request. The intercept server is further configured or designed to determine, using the identified source device information, a first portion of the client servers for forwarding the first request. The intercept server is further configured or designed to forward information relating to the first request to the first portion of the client servers. Additionally, the intercept server is further configured or designed to cause each of the first potion of client servers to respond to the source device at substantially the same time.
An additional embodiment of the present invention is directed to a system for routing a specific device to access a specific client server in a data network. The data network includes at least one host server and an intercept server configured or designed to intercept packets directed to the at least one host server. The system comprises a plurality of client servers configured or designed to store information corresponding to information stored on the at least one host server. The plurality of client servers includes a first client server configured or designed to receive a tunneled packet from the intercept server, wherein the tunneled packet includes information relating to a request from the specific device to resolve an address of a host name. The first client server is further configured or designed to generate, using information from the received tunneled packet, a first spoofed response to the first request. The first client server is further configured or designed to transmit the first spoofed response to the specific device. According to one implementation, the first spoofed response comprises a DNS record response specifying an IP address associated with the first client server.
Additional objects, features and advantages of the various aspects of the present invention will become apparent from the following description of its preferred embodiments, which description should be taken in conjunction with the accompanying drawings.